<?php
namespace Sfsn\Core\Dao;
use PDO;
interface DbInterface
{
    /**
     * 返回连接状态
     */
    public function success();
    /**
     * 事务开始
     */
    public function beginTransaction();

    /**
     * 事务提交
     */
    public function commit();

    /**
     * 事务回滚
     */
    public function rollBack();

    /**
     * 执行sql查询
     *
     * @param string $sql            
     * @param array $params            
     */
    public function query($sql, $params = array());

    /**
     * 执行sql命令
     *
     * @param string $sql            
     * @param array $params            
     */
    public function execute($sql, $params = array());

    /**
     * 从结果集中取得一行作为关联数组，或数字数组，或二者兼有
     *
     * @param unknown $result_type            
     */
    public function fetch($result_type = PDO::FETCH_ASSOC);

    /**
     * 从结果集中取得所有行作为关联数组，或数字数组，或二者兼有
     *
     * @param unknown $result_type            
     */
    public function fetchAll($result_type = PDO::FETCH_ASSOC);

    /**
     * 取得前一次 MySQL 操作所影响的记录行数
     */
    public function affectedRows();

    /**
     * 获取上一次插入的id
     */
    public function lastId();

    /**
     * 获取SQL语句
     */
    public function getSql();

    /**
     * 获取数据库表
     *
     * @param string $database            
     */
    public function getTables($database);

    /**
     * 获取表结构
     *
     * @param unknown $table            
     */
    public function getFields($table);

    /**
     * 获取行数
     *
     * @param unknown $table            
     * @param unknown $where            
     * @param string $field            
     */
    public function count($table, $where, $field = '*');

    /**
     * 取得数据库版本
     */
    public function version();

    /**
     * 字段处理
     * @param unknown $field
     */
    public function pareField($field);
    /**
     * 解析待添加的数据
     * @param unknown $data
     */
    public function parseAdd($data);
    /**
     * 解析待修改的数据
     * @param unknown $data
     */
    public function parseUpdate($data);
    /**
     * 解析查询条件
     *
     * @param unknown $options            
     */
    public function parseCondition($options);    

    /**
     * 输出错误信息
     */
    private function _exception($e);

    /**
     * 释放资源
     */
    public function free();

    /**
     * 断开链接
     */
    public function close();
}